home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / sunfonts / vfont2bdf.c < prev   
C/C++ Source or Header  |  1992-02-06  |  1KB  |  69 lines

  1. #include <vfont.h>
  2. #include <stdio.h>
  3. #include <pixrect/pixrect_hs.h>
  4. #include <ctype.h>
  5. #include "Font.h"
  6.  
  7. Font *vfont2bdf(ifp, name)
  8. FILE *ifp;
  9. char *name;
  10. {
  11.     int ils, diff, i, size;
  12.     Pixfont *pf;
  13.     byte *bitmaps;
  14.     char *cp;
  15.     struct header hdr;
  16.     struct dispatch dsp[NUM_DISPATCH], *dp;
  17.     Font *font= 0;
  18.     
  19.     fread(&hdr, sizeof (struct header), 1, ifp);
  20.     
  21.     if (hdr.magic != VFONT_MAGIC) {
  22.     fprintf(stderr, "%s not a vfont\n", name);
  23.     return 0;
  24.     }
  25.     
  26.     pf= pf_open_private(name);
  27.     ils= pf->pf_defaultsize.y;
  28.     pf_close(pf);
  29.     
  30.     fread(dsp, sizeof (struct dispatch), NUM_DISPATCH, ifp);
  31.     bitmaps= (unsigned char*) malloc(hdr.size);
  32.     fread(bitmaps, hdr.size, 1, ifp);
  33.     
  34.     for (cp= name; *cp; cp++)
  35.     if (isdigit(*cp))
  36.         break;
  37.     if (*cp)
  38.     size= atoi(cp);
  39.     else
  40.     size= 12;
  41.     
  42.     font= NewFont(name, size, 72, 72, 9999, 9999, 9999);
  43.     
  44.     for (dp= dsp, i= 0; i < NUM_DISPATCH; i++, dp++)
  45.     if (dp->nbytes)
  46.         AddGlyph(font, i, dp->width, dp->up, dp->down, dp->left, dp->right,
  47.                 dp->nbytes, &bitmaps[dp->addr], adobename(i), 0);
  48.     return font;
  49. }
  50.  
  51. main(argc, argv)
  52. int argc;
  53. char *argv[];
  54. {
  55.     Font *fp;
  56.     FILE *ifp;
  57.     
  58.     ifp= fopen(argv[1], "r");
  59.     if (ifp) {
  60.     fp= vfont2bdf(ifp, argv[1]);
  61.     if (fp) {
  62.         FontBBox(fp);
  63.         DumpAsBdf(stdout, fp);
  64.         FreeFont(fp);
  65.     }
  66.     fclose(ifp);
  67.     }
  68. }
  69.